package com.ssy.lingxi.contract.esign.response;

import lombok.Data;

import java.util.List;

@Data
public class SignFieldDetailResponse {

    /**
     * 签署区列表数据
     */
    private List<SignField> signfields;

    @Data
    private static class SignField {
        /**
         * 签约主体类别，0-个人，1-机构，默认0,2 是不限
         */
        private Integer actorIndentityType;
        /**
         * 添加时间
         */
        private Integer addTime;
        /**
         * 是否指定位置，TRUE表示不允许更新位置，配置项，无默认值
         */
        private Boolean assignedPosbean;
        /**
         * 是否指定印章数据，TRUE表示不允许更新印章，配置项，无默认值
         */
        private Boolean assignedSeal;
        /**
         * 签约主体账号标识，将使用该主体账号对应的数字证书完成本次签署，
         * 如：当存在签署操作人代某机构签署时，需要传入该机构的账号id
         */
        private String authorizedAccountId;
        /**
         * 是否自动执行，TRUE需要静默授权，配置项，无默认值
         */
        private Boolean autoExecute;
        /**
         * 执行失败原因
         */
        private String executeFailedReason;
        /**
         * 文件file id
         */
        private String fileId;
        /**
         * 流程id
         */
        private String flowId;
        /**
         * 签署区顺序，默认1,且不小于1，顺序越小越先处理
         */
        private String order;
        /**
         * 签署区位置信息
         */
        private PosBean posBean;
        /**
         * 印章文件file key
         */
        private String sealFileKey;
        /**
         * 印章id
         */
        private String sealId;
        /**
         * 印章类型，支持多种类型时逗号分割，0-手绘印章，1-模版印章，为空不限制
         */
        private String sealType;
        /**
         * 签署类型，0-不限，1-单页签署，2-骑缝签署,4-关键字签署，默认1
         */
        private Integer signType;
        /**
         * 签署操作人个人账号标识，即操作本次签署的个人，
         * 如需e签宝通知用户签署，则系统向该账号下绑定的手机、邮箱发送签署链接
         */
        private String signerAccountId;
        /**
         * 签署区Id
         */
        private String signfieldId;
        /**
         * 签署区状态（0："等待执行，1："执行中"，2："执行失败"，3："审批中"，4： "执行完成"）
         */
        private Integer status;
        /**
         * 签署区签署时间。
         * 当status=0时，updataTime为签署区创建时间；
         * 当status=1时，updataTime为签署区创建时间；
         * 当status=2时，updataTime为执行失败的时间；
         * 当status=3时，updataTime为审批提交时间；
         * 当status=4时，updataTime为签署区签署时间；
         */
        private Integer updateTime;
        /**
         * 状态描述
         */
        private String statusDescription;
    }

    @Data
    private static class PosBean {
        /**
         * 页码信息，可以','或'-'分割
         */
        private String posPage;
        /**
         * x坐标
         */
        private Float posX;
        /**
         * y坐标
         */
        private Float posY;
        /**
         * 签署区宽
         */
        private Float width;
    }


}
